package com.datoucai.config;

import com.datoucai.entity.CommentParam;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
@Slf4j
public class DataSourceAspect {

    // 拦截Mapper层所有方法（根据实际包路径修改）
//    @Pointcut("execution(* com.datoucai.mapper.CommentMapper.queryCommentByParam(..))")
    public void dataSourcePointcut() {}

//    @Before("dataSourcePointcut()")
    public void before(JoinPoint joinPoint) {

        // 获取用户ID（假设用户ID是方法第一个参数）
        Object[] args = joinPoint.getArgs();
        CommentParam commentParam = (CommentParam) args[0]; // 根据实际参数位置调整
        
        // 根据奇偶数设置数据源
        if (commentParam.getResourceId() % 2 != 1) {
            DataSourceContextHolder.setDataSource("primary");
        } else {
            DataSourceContextHolder.setDataSource("secondary");
        }
        log.info("进入了动态切换数据源切面-采用数据源:{}",DataSourceContextHolder.getDataSource());

    }

//    @After("dataSourcePointcut()")
    public void after() {
        // 清理数据源标识
        DataSourceContextHolder.clearDataSource();
    }
}